package com.spic.business.train.plan.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.spic.business.train.plan.domain.TrainPlan;
import com.spic.business.train.plan.domain.TrainPlanShift;
import com.spic.business.train.plan.domain.TrainPlanStaff;
import com.spic.business.train.trainInfo.domain.TrainInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 培训计划Mapper接口
 *
 * @author spic
 * @date 2021-10-15
 */
public interface TrainPlanMapper extends BaseMapper<TrainPlan> {
    /**
     * 查询培训计划
     *
     * @param id 培训计划主键
     * @return 培训计划
     */
    public TrainPlan selectTrainPlanById(String id);

    /**
     * 获取人员数信息
     *
     * @param id
     * @return
     */
    List<TrainPlanStaff> selectTrainPlanStaff(String trainPlanId);

    /**
     * 查询培训计划列表
     *
     * @param trainPlan 培训计划
     * @return 培训计划集合
     */
    public List<TrainPlan> selectTrainPlanList(TrainPlan trainPlan);

    /**
     * 新增培训计划
     *
     * @param trainPlan 培训计划
     * @return 结果
     */
    public int insertTrainPlan(TrainPlan trainPlan);

    /**
     * 修改培训计划
     *
     * @param trainPlan 培训计划
     * @return 结果
     */
    public int updateTrainPlan(TrainPlan trainPlan);

    /**
     * 删除培训计划
     *
     * @param id 培训计划主键
     * @return 结果
     */
    public int deleteTrainPlanById(String id);

    /**
     * 批量删除培训计划
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTrainPlanByIds(String[] ids);

    /**
     * 查询未绑定培训的计划
     *
     * @return 结果
     */
    List<TrainPlan> selectplanNotIntraininfo(TrainInfo trainInfo);

    /**
     * 批量新增培训方案-培训班数
     *
     * @param trainPlanShiftList 培训方案-培训班数列表
     * @return 结果
     */
    int batchTrainPlanShift(List<TrainPlanShift> trainPlanShiftList);


    /**
     * 批量新增培训方案-培训班数
     *
     * @param trainPlanStaffList 培训方案-培训人数
     * @return 结果
     */
    int batchTrainPlanStaff(List<TrainPlanStaff> trainPlanStaffList);

    /**
     * 通过培训计划主键删除培训方案-培训班数信息
     *
     * @param id 培训计划ID
     * @return 结果
     */
    int deleteTrainPlanShiftByTrainPlanId(String id);

    /**
     * 通过培训计划主键删除培训方案-培训班人数
     *
     * @param id 培训计划ID
     * @return 结果
     */
    int deleteTrainPlanStaffByTrainPlanId(String id);

    /**
     * 批量删除培训方案-培训班人数
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTrainPlanStaffByTrain(String[] ids);

    /**
     * 批量删除培训方案-培训班数
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTrainPlanShiftByIds(String[] ids);

    /**
     * 更新方案状态
     *
     * @param planId
     * @param status
     * @return
     */
    int updateStatus(@Param("planId") String planId, @Param("status") int status);
}
